Floating-point processors are specialized computing units that perform certain mathematical operations, e.g., multiplication, division, trigonometric functions, and exponential functions, at high speed. Accordingly, powerful computing systems often incorporate floating-point processors, either as part of the main processor or as a coprocessor. A floating-point representation of a number commonly includes a sign component, an exponent, and a mantissa. To find the value of a floating-point number, the mantissa is multiplied by a base (commonly 2 in computers) raised to the power of the exponent. The sign is applied to the resultant value.
The precision of the floating-point processor is defined by the number of bits used to represent the mantissa. The more bits in the mantissa, the greater the precision. The precision of the floating-point processor generally depends on the particular application. For example, the ANSI/IEEE-754 standard (commonly followed by modern computers) specifies a 32-bit single format having a 1-bit sign, an 8-bit exponent, and a 23-bit mantissa. Only the 23 fraction bits of the mantissa are stored in the 32-bit encoding, an integer bit, immediately to the left of the binary point, is implied. The IEEE-754 also specifies a 64-bit double format having a 1-bit sign, an 11-bit exponent, and a 53-bit mantissa. Analogous to the single encoding, only the 52 fraction bits of the mantissa are stored in the 64-bit encoding, an integer bit, immediately to the left of the binary point, is implied. Higher precision results in a higher accuracy, but commonly results in increased power consumption.
The performance of floating-point arithmetic operations can entail computational inefficiency because floating-point processors are commonly limited to the precision provided by either the single format, or both the single and double formats. While some applications may require these types of precision, other applications may not. For example, some graphics applications may only require a 16-bit mantissa. For these graphics applications, any accuracy beyond 16 bits of precision tends to result in unnecessary power consumption. This is of particular concern in battery operated devices where power comes at a premium, such as wireless telephones, personal digital assistants (PDA), laptops, game consoles, pagers, and cameras, just to name a few. If it is known that an application always requires a certain reduced precision, the floating-point processor can be designed and built to that reduced precision. For general purpose processors, however, the common situation is that for certain applications, e.g. generating 3D graphics, a reduced precision may be acceptable, and for other applications, e.g. implementing Global Positioning System (GPS) functions, a greater precision may be needed. Accordingly, there is a need in the art for a floating-point processor in which the reduced precision, or subprecision, of the floating-point format is selectable. Power management techniques may also be employed to ensure that that the floating-point processor does not consume more power than necessary to support the selected subprecision.